package m2.binding;

import m2.port.PortConfigRequis;
import m2.port.PortRequis;

public class BindingR extends Binding {

	protected PortConfigRequis portConfigRequis;
	protected PortRequis portRequis;
	private boolean inverse;

	public BindingR(String name, PortConfigRequis portConfigRequis,
			PortRequis portRequis, TypeBinding type) {
		super(name, type);
		this.setInverse(inverse);
		this.portConfigRequis = portConfigRequis;
		this.portRequis = portRequis;
		if (type == TypeBinding.PortComp2PortConf) {
			
			
			portRequis.addObserver(this);
			this.addObserver(portConfigRequis);
		}
		if (type == TypeBinding.PortConf2PortComp) {
			portConfigRequis.addObserver(this);
			this.addObserver(portRequis);
		}

	}

	public PortConfigRequis getPortConfigRequis() {
		return portConfigRequis;
	}

	public void setPortConfigRequis(PortConfigRequis portConfigRequis) {
		this.portConfigRequis.deleteObserver(this);
		this.portConfigRequis = portConfigRequis;
		this.portConfigRequis.addObserver(this);
	}

	public PortRequis getPortRequis() {
		return portRequis;
	}

	public void setPortRequis(PortRequis portRequis) {
		this.portRequis = portRequis;
	}

	@Override
	public void update(Object o, Object arg) {
		System.out.println("\n"+name + " redirection du message " + arg + "\n\n");
		notifyObservers(arg);
	}

	public void setInverse(boolean inverse) {
		this.inverse = inverse;
	}

}
